package com.itheima;

import javax.lang.model.util.SimpleAnnotationValueVisitor6;
import java.util.Random;
import java.util.Scanner;

public class Java_17 {
    public static void main(String[] args) {
        //编程案例：投注双色球
        System.out.println("----------这是双色球编程案例之用户输入功能----------");
        int[] user = UserSelectNumber();
        System.out.print("[");
        for (int i = 0; i < user.length; i++) {
            System.out.print(i == user.length - 1 ? user[i] :user[i] + ",");
        }
        System.out.println("]");
        System.out.println("----------这是双色球编程案例之随机产生幸运数字功能----------");
        int[] LuckNumbers = LuckNumbers();
        System.out.print("[");
        for (int i = 0; i < LuckNumbers.length; i++) {
            System.out.print(i ==LuckNumbers.length - 1 ? LuckNumbers[i] :LuckNumbers[i] + ",");
        }
        System.out.println("]");
        System.out.println("----------这是双色球编程案例之判断是否中奖功能----------");
        int rednumber  = red(user,LuckNumbers);
        int bluenumber = blue(user,LuckNumbers);
        test(rednumber,bluenumber);

    }
    //定义一个方法：让用户输入双色球号码
    public static int[] UserSelectNumber(){
        Scanner sc = new Scanner(System.in);
        //动态初始化一个整型数组：来存入用户输入的内容
        int[] numbers = new int[7];
        //遍历这个数组
        for (int i = 0; i < numbers.length-1; i++) {
            //提示用户输入红球数字
            while (true){
                System.out.print("请输入红球第"+ (i+1)+"个1-33之间的数字:");
                int number = sc.nextInt();
                //还要判断输入的数字是否在规定的范围之内：
                if (number < 1 || number > 33){
                    //证明用户输入的数字不合法
                    System.out.println("您输入的数字有误，请重新输入：");
                }else {
                    //证明用户输入的数字是正确的
                    //同时还要判断用户输入的数字是否已经在数组中存在了，在此，我们定义一个方法，来实现这个功能
                    if (exist(numbers,number) == false){
                        numbers[i] = number;
                        break;
                    }else {
                        System.out.println("这个数字您已经输入过了，请重新输入");
                    }
                }
            }
        }
        //提示用户输入蓝球数字
        //同样需要判断输入的数字是否合法
        while (true){
            System.out.print("请输入蓝色球1-16的数字：");
            int number02 = sc.nextInt();
            if (number02 < 1 || number02 > 16){
                System.out.println("您输入的数据有误，请重新输入：");
            }else {
                numbers[6] = number02;
                //数字录入成功
                break;
            }
        }
        return numbers;
    }
    //判断用户输入内容是否已经存在
    public static boolean exist(int[] numbers, int number){
        //如果返回true，则证明，已经存在了，如果返回是false，则证明不存在，可以录入
        for (int i = 0; i < numbers.length-1; i++) {
            if (numbers[i] == number){
                //已经存在了，则返回true
                return true;
            }
        }
        return false;
    }
    //定义一个方法，来让计算机随机产生一组幸运数字
    public static int[] LuckNumbers(){
        Random r = new Random();
        //动态初始化一个整型数组，来接收产生的一组幸运数字
        int[] Luck = new int[7];
        for (int i = 0; i < Luck.length - 1; i++) {

            while (true){
                //随机产生一个红球（1-33）幸运数字
                int LuckNumbers = r.nextInt(33) +1;
                //同样，还要判断随机产生的这个数字是否已经存在了
                if (exist(Luck,LuckNumbers) == false){
                    //代表不存在
                    Luck[i] = LuckNumbers;
                    break;
                }
            }
            //随机生成蓝色球的数字(1-16)
            int LuckNumbers_bule = r.nextInt(16)+1;
            Luck[6] = LuckNumbers_bule;
        }
        return Luck;
    }
    //定义一个方法，来判断，随机产生的数组和用户输入的数组是否一致
    public static int red(int[] numbers,int[] Luck){
        //在这里，我们分别定义一个整型变量来储存红球和蓝球对应的个数
        int redcount = 0;
        //找红球对应个数
        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = 0; j < Luck.length - 1; j++){
                if (numbers[i] == Luck[i]){
                    redcount++;
                }
            }
        }
        return redcount;
    }

    public static int  blue(int[] numbers,int[] Luck){
        int bluecount = 0;
        bluecount = numbers[6] == Luck[6] ? 1 : 0;
        return bluecount;
    }
    //定义一个方法，来判断用户是否中奖
    public static void  test (int redcount,int bluecount){
        if (redcount == 6 && bluecount ==1){
            System.out.println("奖金1000万");
        }else if (redcount == 6 && bluecount == 0){
            System.out.println("奖金500万");
        }else if (redcount == 5 && bluecount == 1){
            System.out.println("奖金3000块");
        }else if (redcount == 5 && bluecount == 0 || redcount == 4 && bluecount == 1){
            System.out.println("奖金200块");
        }else if (redcount == 4 && bluecount == 0 || redcount == 3 && bluecount == 1){
            System.out.println("奖金10块");
        }else if (redcount < 3 && bluecount == 1){
            System.out.println("奖金5块");
        }else {
            System.out.println("感谢您为福利事业做出巨大贡献");
        }

    }
}
